package solitaire.controle;

import javax.swing.JFrame;

import solitaire.application.Solitaire;
import solitaire.presentation.PColonne;
import solitaire.presentation.PSabot;
import solitaire.presentation.PSolitaire;
import solitaire.presentation.PTasDeCartesColorees;

/**
 * Controlleur du solitaire, faisant le lien entre le mod&egrave;le du solitaire et sa pr&eacute;sentation.
 * L'op&eacute;ration initialiser() est surcharg&eacute;e pour mettre en place les diff&eacute;rents &eacute;l&eacute;ments de l'IHM du jeu.
 * 
 * @author Andr&eacute; Simon, J&eacute;r&eacute;my Brault
 */
public class CSolitaire extends Solitaire {

	private PSolitaire presentation;
	
	/**
	 * Constructeur du controlleur de solitaire qui construit le solitaire, puis sa pr&eacute;sentation.
	 * 
	 * @see Solitaire#Solitaire(String, solitaire.application.Usine)
	 */
	public CSolitaire(String nom, CUsine usine) {
		super(nom, usine);
	}
	
	/**
	 * @return {@link PSolitaire} la pr&eacute;sentation du solitaire
	 */
	public PSolitaire getPresentation(){
		return presentation;
	}
	
	@Override
	public void initialiser() {
		super.initialiser();
		
		presentation = new PSolitaire(this);
		
		PSabot pSabot = ((CSabot)sabot).getPresentation();
		
		presentation.setSabot(pSabot);
		
		PTasDeCartesColorees[] pTasDeCartesColorees = new PTasDeCartesColorees[4];
		
		for(int i = 0; i < 4; i++) {
			pTasDeCartesColorees[i] = ((CTasDeCartesColorees)(pilesColorees[i])).getPresentation();
		}
		
		presentation.setTasColorees(pTasDeCartesColorees);
		
		PColonne[] pColonnes = new PColonne[7];
		
		for(int i = 0; i < 7; i++) {
			pColonnes[i] = ((CColonne)(pilesAlternees[i])).getPresentation();
		}
		
		presentation.setColonnes(pColonnes);
	}
	
	public static void main(String[] args) {
		CSolitaire solitaire = new CSolitaire("CSolitaire", new CUsine());
		solitaire.initialiser();
				
		JFrame frame = new JFrame("Test CSolitaire");
		frame.getContentPane().add(solitaire.getPresentation());
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setSize(800, 600);
		frame.setResizable(false);
		frame.setVisible(true);
		
		solitaire.run();
	}
	
}
